텍스트 벡터화
원-핫 인코딩에서 워드 임베딩까지
자연어 처리(NLP)에서 텍스트를 기계가 이해할 수 있는 숫자 벡터(Vector)로 변환하는 것은 필수입니다.
이 과정을 벡터화(Vectorization)라 하며, 그 발전 과정을 알아보겠습니다.
1. 원-핫 인코딩 (One-hot Encoding)
컴퓨터는 글자를 직접 이해할 수 없기 때문에, 텍스트를 숫자 형태의 벡터(Vector)로 변환하는 '벡터화' 과정이 필수적입니다. 원-핫 인코딩은 이 벡터화의 가장 기본적인 방법 중 하나입니다.
핵심 개념과 작동 방식
원-핫 인코딩은 단어를 표현하는 가장 기초적이고 직관적인 방법으로, 단어장의 모든 단어에 고유 번호를 부여하고 해당 번호의 위치만 1로, 나머지는 모두 0으로 표시하는 방식입니다.
작동 방식
- 단어장(Vocabulary) 생성
전체 텍스트에서 고유한 단어들을 모두 모아 '단어:고유번호' 형태의 사전을 만듭니다. - 정수 인코딩(Indexing)
단어장의 각 단어에 0부터 시작하는 고유 정수(Index)를 할당합니다. - 벡터 변환
단어장 크기와 동일한 차원의 0으로 채워진 벡터를 생성한 뒤, 해당 단어의 인덱스 위치 값만 1로 변경합니다.
명확한 한계
- 고차원 / 희소 벡터 (Sparsity)
단어 수가 3만 개면 벡터의 차원도 3만 차원이 됩니다.
메모리 낭비가 심하고 계산이 비효율적입니다. - 의미 관계 표현 불가
모든 단어 벡터는 서로 수학적으로 독립적입니다.
즉, '컴퓨터-노트북'의 관계와 '컴퓨터-사과'의 관계에 아무런 차이가 없습니다.
예시 : 원-핫 벡터의 한계
단어장 및 벡터
단어장 : {'사과':0, '바나나':1, '컴퓨터':2, '노트북':3}
사과 : [1, 0, 0, 0]
컴퓨터 : [0, 0, 1, 0]
노트북 : [0, 0, 0, 1]
문제점
'컴퓨터'와 '노트북' 사이의 거리, 그리고 '컴퓨터'와 '사과' 사이의 거리가 수학적으로 동일합니다.
이는 단어의 의미 관계를 전혀 표현하지 못함을 보여줍니다.
이처럼 원-핫 인코딩은 단어의 의미를 담지 못하는 명확한 한계가 있었습니다.
이러한 문제를 해결하기 위해, 단어의 의미를 벡터에 '임베딩(Embedding)'하는 새로운 접근 방식이 등장했습니다. 이제 워드 임베딩에 대해 알아보겠습니다.
2. 워드 임베딩 (Word Embedding)
핵심 개념과 아이디어
워드 임베딩은 각 단어를 사용자가 지정한 저차원(예: 100~300차원)의 밀집 벡터(Dense Vector)로 표현하는 기술입니다. 이 벡터는 단어의 문법적, 의미적 정보를 압축하여 담고 있는 실수들로 채워져 있습니다.
핵심 아이디어
- 분산 표현 (Distributed Representation)
단어의 의미를 벡터의 여러 차원에 걸쳐 분산시켜 표현합니다. - 의미적 유사도
의미가 비슷한 단어들은 벡터 공간상에서 서로 가까운 위치에 존재하게 됩니다.
예시 : 의미를 담은 벡터
계산 예시
유사도 계산
cosine_similarity('컴퓨터', '노트북') → 높음 (예: 0.92)
cosine_similarity('컴퓨터', '사과') → 낮음 (예: 0.15)
관계 유추
vector('왕') - vector('남자') + vector('여자') ≈ vector('여왕')
결과
벡터의 거리와 방향을 통해 '컴퓨터'와 '노트북'이 '사과'보다 훨씬 가깝다는 것을 명확히 알 수 있으며, 단어 간의 추상적인 관계까지 계산할 수 있습니다.
3. 결론
단순한 기호에서 의미를 지닌 좌표로
원-핫 인코딩은 단어를 기계가 읽도록 바꾸는 첫 걸음이었지만 의미를 담지 못했습니다.
워드 임베딩은 이러한 한계를 극복하고 단어의 '의미'를 벡터 공간의 '좌표'로 표현하는 혁신을 이루었으며, 이 개념은 오늘날 BERT, GPT와 같은 거의 모든 현대 자연어 처리 모델의 근간이 되는 핵심 아이디어입니다.